package com.yuexin.project.finance.bill.mapper;

import com.yuexin.project.finance.bill.domain.Bill;
import com.yuexin.project.finance.bill.domain.BillList;
import com.yuexin.project.finance.bill.domain.MoneyBill;
import com.yuexin.project.finance.bill.domain.RushBill;
import com.yuexin.project.finance.bill.formbean.BillListFormBean;
import com.yuexin.project.finance.bill.formbean.MoneyBillListFormBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户账单 数据层
 * 
 * @author zoncont.ahanu
 * @date 2019-03-08
 */
public interface BillMapper {
	/**
     * 查询用户账单信息
     * 
     * @param billId 用户账单ID
     * @return 用户账单信息
     */
	Bill selectBillById(Integer billId);

	/**
	 * 获取需冲账数据
	 * @param billId
	 * @param companyId
	 * @return
	 */
	RushBill selectRushBillById(@Param("billId") Integer billId, @Param("companyId") String companyId);

	/**
	 * 账户余额报表
	 * @param form
	 * @return
	 */
	List<MoneyBill> selectMoneyBill(MoneyBillListFormBean form);

	/**
     * 查询用户账单列表
     * 
     * @param bill 用户账单信息
     * @return 用户账单集合
     */
	List<Bill> selectBillList(Bill bill);

	/**
     * 查询用户账单列表
     *
     * @param form 查询条件
     * @return 用户账单集合
     */
	List<BillList> selectBillLists(BillListFormBean form);

	/**
     * 新增用户账单
     * 
     * @param bill 用户账单信息
     * @return 结果
     */
	int insertBill(Bill bill);
	
	/**
     * 修改用户账单
     * 
     * @param bill 用户账单信息
     * @return 结果
     */
	int updateBill(Bill bill);
	
	/**
     * 删除用户账单
     * 
     * @param billId 用户账单ID
     * @return 结果
     */
	int deleteBillById(Integer billId);
	
	/**
     * 批量删除用户账单
     * 
     * @param billIds 需要删除的数据ID
     * @return 结果
     */
	int deleteBillByIds(String[] billIds);
	
}